﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace CityGames
{
    public partial class FormEventosGruposT : Form
    {
        static private FormContenedor contenedor;
        static private Torneo torneo = new Torneo();
        private string nombreEvento;
        

        public FormEventosGruposT()
        {
            InitializeComponent();
        }

        private void GruposT_Load(object sender, EventArgs e)
        {
            try
            {
                contenedor = (FormContenedor)MdiParent;
                nombreEvento = "";
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString(), "Se ha producido un error.", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void bPartidosA_Click(object sender, EventArgs e)
        {
            try
            {
                contenedor.hijoFormEventosJornadasT.CargarPartidos(nombreEvento, "A");
                contenedor.hijoFormEventosJornadasT.Focus();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString(), "Se ha producido un error.", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void bPartidosB_Click(object sender, EventArgs e)
        {
            try
            {
                contenedor.hijoFormEventosJornadasT.CargarPartidos(nombreEvento, "B");
                contenedor.hijoFormEventosJornadasT.Focus();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString(), "Se ha producido un error.", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void bPartidosC_Click(object sender, EventArgs e)
        {
            try
            {
                contenedor.hijoFormEventosJornadasT.CargarPartidos(nombreEvento, "C");
                contenedor.hijoFormEventosJornadasT.Focus();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString(), "Se ha producido un error.", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void bPartidosD_Click(object sender, EventArgs e)
        {
            try
            {
                contenedor.hijoFormEventosJornadasT.CargarPartidos(nombreEvento, "D");
                contenedor.hijoFormEventosJornadasT.Focus();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString(), "Se ha producido un error.", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        public void CargarGrupos(string evento)
        {
            try
            {
                nombreEvento = evento;

                dgvGrupoA.DataSource = torneo.ObtenerSociosDeGrupo(nombreEvento, "A");
                dgvGrupoB.DataSource = torneo.ObtenerSociosDeGrupo(nombreEvento, "B");
                dgvGrupoC.DataSource = torneo.ObtenerSociosDeGrupo(nombreEvento, "C");
                dgvGrupoD.DataSource = torneo.ObtenerSociosDeGrupo(nombreEvento, "D");

                dgvGrupoA.DataMember = "SociosDeGrupo";
                dgvGrupoB.DataMember = "SociosDeGrupo";
                dgvGrupoC.DataMember = "SociosDeGrupo";
                dgvGrupoD.DataMember = "SociosDeGrupo";

                dgvGrupoA.Columns["DNISocio"].Visible = false;
                dgvGrupoB.Columns["DNISocio"].Visible = false;
                dgvGrupoC.Columns["DNISocio"].Visible = false;
                dgvGrupoD.Columns["DNISocio"].Visible = false;

                if (dgvGrupoA.Rows.Count > 0)
                    bPartidosA.Enabled = true;
                else
                    bPartidosA.Enabled = false;

                if (dgvGrupoB.Rows.Count > 0)
                    bPartidosB.Enabled = true;
                else
                    bPartidosB.Enabled = false;

                if (dgvGrupoC.Rows.Count > 0)
                    bPartidosC.Enabled = true;
                else
                    bPartidosC.Enabled = false;

                if (dgvGrupoD.Rows.Count > 0)
                    bPartidosD.Enabled = true;
                else
                    bPartidosD.Enabled = false;

                lblNombreTorneo.Text = "Grupos del Evento: " + nombreEvento;

                if ((string)torneo.ObtenerDatosDeTorneo(nombreEvento).Tables[0].Rows[0]["Estado"] == "Eliminatorias" || (string)torneo.ObtenerDatosDeTorneo(nombreEvento).Tables[0].Rows[0]["Estado"] == "Finalizado")
                {
                    bEliminatorias.Enabled = true;
                    bCerrarJornadas.Enabled = false;
                }
                else
                {
                    bEliminatorias.Enabled = false;
                    bCerrarJornadas.Enabled = true;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString(), "Se ha producido un error.", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void bDatosTorneo_Click(object sender, EventArgs e)
        {
            try
            {
                contenedor.hijoFormEventosAltaTorneo.Focus();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString(), "Se ha producido un error.", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void bVolverAGestion_Click(object sender, EventArgs e)
        {
            try
            {
                contenedor.hijoFormEventosGestion.Focus();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString(), "Se ha producido un error.", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void bEliminatorias_Click(object sender, EventArgs e)
        {
            try
            {
                contenedor.hijoFormEventosBracketsT.Focus();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString(), "Se ha producido un error.", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void bCerrarJornadas_Click(object sender, EventArgs e)
        {
            try
            {
                if (torneo.TodosLosPartidosConPuntuacion(nombreEvento))
                {
                    if (MessageBox.Show("¿Esta seguro de que desea terminar las jornadas?    ", "Confirmar", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.Yes)
                    {
                        if (torneo.CerrarJornadasDeTorneo(nombreEvento))
                        {
                            MessageBox.Show("            Jornadas cerradas exitosamente.\nTodos los Participantes han sido repartidos aleatoriamente.", "Jornadas cerradas.", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            CargarGrupos(nombreEvento);
                            contenedor.hijoFormEventosGestion.CargarDataGridViewEventos();
                            contenedor.hijoFormEventosBracketsT.CargarBracketsDeTorneo(nombreEvento);
                            contenedor.hijoFormEventosBracketsT.Focus();
                        }
                        else
                        {
                            MessageBox.Show("Error al cerrar las jornadas del evento.    ", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        }
                    }
                }
                else
                {
                    MessageBox.Show("                Hay partidos sin resultados.\nDebe rellenar todos los partidos antes de cerrar las Jornadas.", "Faltan partidos por completar", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString(), "Se ha producido un error.", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
    }
}
